In the current development of range extension (RExt) or screen content coding for High Efficiency Video Coding (HEVC) standard, some tools have been adopted due to their improvements in coding efficiency for screen contents. For Intra blocks, Intra prediction according to the conventional approach is performed using prediction based on reconstructed pixels from neighboring blocks. Intra prediction may select an Intra Mode from a set of Intra Modes, which include a vertical mode, horizontal mode and various angular prediction modes. For HEVC Range Extension and screen content coding, a new Intra coding mode, named Intra-block copy (IntraBC) has been used. The IntraBC technique that was originally proposed by Budagavi in AHG8: Video coding using Intra motion compensation, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting: Incheon, KR, 18-26 Apr. 2013, Document: JCTVC-M0350 (hereinafter JCTVC-M0350). An example according to JCTVC-M0350 is shown in FIG. 1, where a current coding unit (CU, 110) is coded using Intra MC (motion compensation). The prediction block (120) is located from the current CU and a displacement vector (112). In this example, the search area is limited to the current CTU (coding tree unit), the left CTU and the left-left CTU. The prediction block is obtained from the already reconstructed region. Then, the displacement vector, also named motion vector (MV), and residual for the current CU are coded. It is well known that the HEVC adopts CTU and CU block structure as basic units for coding video data. Each picture is divided into CTUs and each CTU is reclusively divided into CUs. During prediction phase, each CU may be divided into multiple blocks, named prediction units (PUs) for performing prediction process. After prediction residue is formed for each CU, the residue associated with each CU is divided into multiple blocks, named transform units (TUs) to apply transform (such as discrete cosine transform (DCT)).
In JCTVC-M0350, the Intra MC is different from the motion compensation used for Inter prediction in at least the following areas:
MVs are restricted to be 1-D for Intra MC (i.e., either horizontal or vertical) while Inter prediction uses 2-D motion estimation.
Binarization is fixed length for Intra MC while Inter prediction uses exponential-Golomb.
Intra MC introduces a new syntax element to signal whether the MV is horizontal or vertical.
Based on JCTVC-M0350, some modifications are disclosed by Pang, et al. in Non-RCE3: Infra Motion Compensation with 2-D MVs, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Vienna, AT, 25 Jul.-2 Aug. 2013, Document: JCTVC-N0256 (hereinafter JCTVC-N0256). Firstly, the Intra MC is extended to support 2-D MVs, so that both MV components can be non-zero at the same time. This provides more flexibility to Intra MC than the original approach, where the MV is restricted to be strictly horizontal or vertical.
In JCTVC-N0256, two MV coding methods were disclosed:
Method 1—Motion vector prediction. The left or above MV is selected as the MV predictor and the resulting motion vector difference (MVD) is coded. A flag is used to indicate whether the MVD is zero. When MVD is not zero, exponential-Golomb codes of the 3rd order are used to code the remaining absolute level of the MVD. Another flag is used to code the sign.
Method 2: No Motion vector prediction. The MV is coded using the exponential-Golomb codes that are used for MVD in HEVC.
Another difference disclosed in JCTVC-N0256 is that the 2-D Intra MC is further combined with the pipeline friendly approach:
1. No interpolation filters are used,
2. MV search area is restricted. Two cases are disclosed:                a. Search area is the current CTU and the left CTU or        b. Search area is the current CTU and the rightmost 4 column samples of the left CTU.        
Among the proposed methods in JCTVC-N0256, the 2-D Intra MC, the removal of interpolation filters, and the search area constraint to the current CTU and the left CTU have been adopted in a new version draft standard. The CU level syntax corresponding to JCTVC-N0256 has been incorporated in High Efficiency Video Coding (HEVC) Range Extension text specification: Draft 4 (RExt Draft 4), Flynn, et al., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Vienna, AT, 25 Jul.-2 Aug. 2013, Document: JCTVC-N1005. The CU level syntax adopted in RExt Draft 4 is shown in Table 1.
TABLE 1Descrip-torNotecoding_unit( x0, y0, log2CbSize ) { if( transquant_bypass_enabled_flag )   cu_transquant_bypass_flagae(v) if( slice_type != I )   cu_skip_flag[ x0 ][ y0 ]ae(v) nCbS = ( 1 << log2CbSize ) if( cu_skip_flag[ x0 ][ y0 ] )   prediction_unit( x0, y0, nCbS, nCbS ) else {  if( intra_block_copy_enabled_flag )(1-1)   intra_bc_flag[ x0 ][ y0 ]ae(v)  if( !intra_bc_flag[ x0 ][ y0 ] ) {(1-2)   if( slice_type != I )(1-3)    pred_mode_flagae(v)   if( CuPredMode[ x0 ][ y0 ] != MODE_INTRA | |(1-4)     log2CbSize = = MinCbLog2SizeY )     part_modeae(v)   }   . . . . . .
As shown in Table 1, a test “if(intra_block_copy_enabled_flag)” is performed as indicated by Note (1-1). The IntraBC flag (i.e., intra_bc_flag[x0][y0]) is incorporated if Intra block copy is enabled as indicated by intra_block_copy_enabled_flag. Syntax element intra_bc_flag indicates whether the associated block is coded in the IntraBC mode. Whether the current block is coded in Non-Intra block copy mode (i.e., if(!intra_bc_flag[x0][y0]) is checked as indicated by Note (1-2), and pred_mode_flag and part_mode may be incorporated according to the tests in Notes (1-3) and (1-4) if the block is not coded in the Intra block copy mode. Syntax element pred_mode_flag equal to 0 specifies that the current coding unit is coded in Inter prediction mode. pred_mode_flag equal to 1 specifies that the current coding unit is coded in Intra prediction mode. Syntax element part_mode specifies partitioning mode of the current coding unit.
Another variation of IntraBC method, named Line-based Intra Block Copy has been disclosed by Chen, et al., in AHG8: Line-based Intra Block Copy, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JCTVC-O0205, 15th Meeting: Geneva, CH, 23 Oct.-1 Nov. 2013, Document: JCTVC-O0205 (hereinafter JCTVC-O0205). FIG. 2A and FIG. 2B illustrate examples of line-based IntraBC method as disclosed in JCTVC-O0205, where a 2N×2N CU is split equally into multiple block partitions of size M×2N (FIG. 2A) or 2N×M (FIG. 2B). The partitioned blocks are termed as lines and M represents a power-of-2 integer and is smaller than 2N. For each line, pixels are predicted in the same way as the original IntraBC except: (1) the block size is of M×2N or 2N×M, and (2) blocks of size M×2N and 2N×M are restricted to only perform horizontal search and vertical search, respectively. Therefore, there are 2N/M Intra displacement vectors per CU needed to be searched and signaled. FIG. 2A illustrates an example of partitioning the CU horizontally into M×2N lines or line blocks. Each line block may be predicted by a prediction line block in the left CTU that has been reconstructed already. The arrows in FIG. 2A represent the displacement vectors or motion vectors for corresponding line blocks. FIG. 2B illustrates an example of partitioning the CU vertically into 2N×M lines or line blocks. Each line block may be predicted by a prediction line block in the CTU above the current CU that has been reconstructed already. The arrows in FIG. 2B represent the displacement vectors or motion vectors for corresponding line blocks. The improvement according to JCTVC-O0205 has shown significant BD-rate reduction over the conventional IntraBC approach. The BD-rate is a well-known performance measurement in the field of video coding.
Table 2 illustrates an example of CU level syntax modification to support the line-based IntraBC as disclosed in JCTVC-O0205.
TABLE 2Descrip-torNotecoding_unit( x0, y0, log2CbSize ) { if( transquant_bypass_enabled_flag )   cu_transquant_bypass_flagae(v) if( slice_type != I )   cu_skip_flag[ x0 ][ y0 ]ae(v) nCbS = ( 1 << log2CbSize ) if( cu_skip_flag[ x0 ][ y0 ] )   prediction_unit( x0, y0, nCbS, nCbS ) else {  if( intra_block_copy_enabled_flag )   intra_bc_flag[ x0 ][ y0 ]ae(v)  if( !intra_bc_flag[ x0 ][ y0 ] ) {   if( slice_type != I )     pred_mode_flagae(v)   if( CuPredMode[ x0 ][ y0 ] != MODE_INTRA | |      log2CbSize = = MinCbLog2SizeY )     part_modeae(v)   if( CuPredMode[ x0 ][ y0 ] == MODE_INTRA(2-1)       && PartMode != PART_NxN) {    ivm_flagae(v)(2-2)    if( ivm_flag)(2-3)       ivm_dirae(v)(2-4)       }   }   . . . . . .
As shown in Table 2, a flag ivm_flag is incorporated in the syntax table as indicated by Note (2-2) if the prediction mode is MODE_INTRA and the partition mode is not PART_N×N as indicated by Note (2-1). ivm_flag equal to 1 specifies that line-based IntraBC is used for the current CU. ivm_flag equal to 0 specifies that line-based IntraBC is not used for the current CU. If the flag ivm_flag has a value of 1 as indicated by Note (2-3), an addition flag ivm_dir is incorporated as indicated by Note (2-4). ivm_dir equal to 1 specifies that line-based IntraBC is along the vertical direction for the current CU. ivm_flag equal to 0 specifies that line-based IntraBC is along the horizontal direction for the current CU. According to JCTVC-O0205, the value of M (i.e., 1, 4, or N) is pre-set, i.e. hard coded without signaling.
The signaling orders of The Inter, Intra and IntraBC prediction modes according to the existing RExt for the Intra slice and the Inter slice are shown in FIG. 3A and FIG. 3B respectively.